package com.fieldchain.ex.fa100.utils.common;

import android.graphics.Bitmap;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;

import java.util.Hashtable;

/**
 * Created by 123 on 2018/4/25.
 */

public class RQCode {
     public  static Bitmap encodeAsBitmap(String str){
         int width=480;
         int height=480;
         try {
             // 判断URL合法性
             if (str == null || "".equals(str) || str.length() < 1) {
                 return null;
             }
             Hashtable hints = new Hashtable();
             hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
             // 图像数据转换，使用了矩阵转换
             BitMatrix bitMatrix = new QRCodeWriter().encode(str,
                     BarcodeFormat.QR_CODE, width, height, hints);
             int[] pixels = new int[width * height];
             // 下面这里按照二维码的算法，逐个生成二维码的图片，
             // 两个for循环是图片横列扫描的结果
             for (int y = 0; y < height; y++) {
                 for (int x = 0; x < width; x++) {
                     if (bitMatrix.get(x, y)) {
                         pixels[y * width + x] = 0xff000000;
                     } else {
                         pixels[y * width + x] = 0xffffffff;
                     }
                 }
             }
             // 生成二维码图片的格式，使用ARGB_8888
             Bitmap bitmap = Bitmap.createBitmap(width, height,
                     Bitmap.Config.ARGB_8888);
             bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
             return bitmap;
         } catch (WriterException e) {
             e.printStackTrace();
         }
         return null;
     }
}
